home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / gg / ncurses-5.3.lha / ncurses-5.3 / form / frm_post.c < prev    next >
C/C++ Source or Header  |  2002-10-24  |  5KB  |  121 lines

  1. /****************************************************************************
  2.  * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  3.  *                                                                          *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a  *
  5.  * copy of this software and associated documentation files (the            *
  6.  * "Software"), to deal in the Software without restriction, including      *
  7.  * without limitation the rights to use, copy, modify, merge, publish,      *
  8.  * distribute, distribute with modifications, sublicense, and/or sell       *
  9.  * copies of the Software, and to permit persons to whom the Software is    *
  10.  * furnished to do so, subject to the following conditions:                 *
  11.  *                                                                          *
  12.  * The above copyright notice and this permission notice shall be included  *
  13.  * in all copies or substantial portions of the Software.                   *
  14.  *                                                                          *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
  16.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
  17.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
  18.  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
  19.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
  20.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
  21.  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
  22.  *                                                                          *
  23.  * Except as contained in this notice, the name(s) of the above copyright   *
  24.  * holders shall not be used in advertising or otherwise to promote the     *
  25.  * sale, use or other dealings in this Software without prior written       *
  26.  * authorization.                                                           *
  27.  ****************************************************************************/
  28.  
  29. /****************************************************************************
  30.  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  31.  *   Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en             *
  32.  ****************************************************************************/
  33. #include "form.priv.h"
  34.  
  35. MODULE_ID("$Id: frm_post.c,v 1.6 2002/07/06 15:33:27 juergen Exp $")
  36.  
  37. /*---------------------------------------------------------------------------
  38. |   Facility      :  libnform  
  39. |   Function      :  int post_form(FORM * form)
  40. |   
  41. |   Description   :  Writes the form into its associated subwindow.
  42. |
  43. |   Return Values :  E_OK              - success
  44. |                    E_BAD_ARGUMENT    - invalid form pointer
  45. |                    E_POSTED          - form already posted
  46. |                    E_NOT_CONNECTED   - no fields connected to form
  47. |                    E_NO_ROOM         - form doesn't fit into subwindow
  48. |                    E_SYSTEM_ERROR    - system error
  49. +--------------------------------------------------------------------------*/
  50. NCURSES_EXPORT(int)
  51. post_form (FORM * form)
  52. {
  53.   WINDOW *formwin;
  54.   int err;
  55.   int page;
  56.  
  57.   if (!form)
  58.     RETURN(E_BAD_ARGUMENT);
  59.  
  60.   if (form->status & _POSTED)   
  61.     RETURN(E_POSTED);
  62.  
  63.   if (!(form->field))
  64.     RETURN(E_NOT_CONNECTED);
  65.   
  66.   formwin = Get_Form_Window(form);
  67.   if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin))) 
  68.     RETURN(E_NO_ROOM);
  69.  
  70.   /* reset form->curpage to an invald value. This forces Set_Form_Page
  71.      to do the page initialization which is required by post_form.
  72.   */
  73.   page = form->curpage;
  74.   form->curpage = -1;
  75.   if ((err = _nc_Set_Form_Page(form,page,form->current))!=E_OK)
  76.     RETURN(err);
  77.  
  78.   form->status |= _POSTED;
  79.  
  80.   Call_Hook(form,forminit);
  81.   Call_Hook(form,fieldinit);
  82.  
  83.   _nc_Refresh_Current_Field(form);
  84.   RETURN(E_OK);
  85. }
  86.  
  87. /*---------------------------------------------------------------------------
  88. |   Facility      :  libnform  
  89. |   Function      :  int unpost_form(FORM * form)
  90. |   
  91. |   Description   :  Erase form from its associated subwindow.
  92. |
  93. |   Return Values :  E_OK            - success
  94. |                    E_BAD_ARGUMENT  - invalid form pointer
  95. |                    E_NOT_POSTED    - form isn't posted
  96. |                    E_BAD_STATE     - called from a hook routine
  97. +--------------------------------------------------------------------------*/
  98. NCURSES_EXPORT(int)
  99. unpost_form (FORM * form)
  100. {
  101.   if (!form)
  102.     RETURN(E_BAD_ARGUMENT);
  103.  
  104.   if (!(form->status & _POSTED)) 
  105.     RETURN(E_NOT_POSTED);
  106.  
  107.   if (form->status & _IN_DRIVER) 
  108.     RETURN(E_BAD_STATE);
  109.  
  110.   Call_Hook(form,fieldterm);
  111.   Call_Hook(form,formterm);
  112.  
  113.   werase(Get_Form_Window(form));
  114.   delwin(form->w);
  115.   form->w = (WINDOW *)0;
  116.   form->status &= ~_POSTED;
  117.   RETURN(E_OK);
  118. }
  119.  
  120. /* frm_post.c ends here */
  121.